{smcl}
{com}{sf}{ul off}{txt}{.-}
      name:  {res}<unnamed>
       {txt}log:  {res}D:\users\llochner\Dropbox\JOINT PROJECTS\JPE_Child_Devp_2020\FINAL_Replication_CLMP_JPE\code\estimation\basics_rel_demand\logs/3_data_cleaning_child_panel.smcl
  {txt}log type:  {res}smcl
 {txt}opened on:  {res} 9 Jul 2025, 17:15:46
{txt}
{com}. 
. ********************************************************************************
. *********************** A. READ-IN THE CHILD PANEL *******************************
. ********************************************************************************
. 
. clear
{txt}
{com}. use "$temp/psid_child.dta"
{txt}
{com}. 
. ********************************************************************************
. *********************** B. INITIAL SAMPLE SELECTION *******************************
. ********************************************************************************
. 
. * restrict to sample mothers ages 16-45 when child was born
. 
. replace ind_not_sample=1 if momageatbirth<16 & momageatbirth!=. //no observation deleted 
{txt}(0 real changes made)

{com}. replace ind_not_sample=1 if momageatbirth>45 & momageatbirth!=. 
{txt}(0 real changes made)

{com}. 
. ************ Year 1997- 2007 ************
. 
. replace ind_not_sample=1 if year>2007|year<1997
{txt}(0 real changes made)

{com}. 
. 
. ********************************************************************************
. *********************** C. DATA CLEANING AND CONSTRUCTION **********************
. ********************************************************************************
. 
. 
. 
. *********************** Cleaning childcare expenditures **********************
. 
. *Set unrealistic responses to missing
. replace chcare=. if (chcare>0&chcare<1)
{txt}(17 real changes made, 17 to missing)

{com}. replace chcare=. if  chcare>500
{txt}(7 real changes made, 7 to missing)

{com}. 
. replace chcare_second=. if (chcare_second>0&chcare_second<1)
{txt}(5 real changes made, 5 to missing)

{com}. replace chcare_second=. if  chcare_second>500
{txt}(3 real changes made, 3 to missing)

{com}. 
. replace chcare_hh_pc =. if (chcare_hh_pc>0&chcare_hh_pc<1)
{txt}(253 real changes made, 253 to missing)

{com}. replace chcare_hh_pc =. if chcare_hh_pc>500
{txt}(0 real changes made)

{com}. 
. 
. *Set second childcare measure cost to zero if the main childcare arrangement cost 
. *is reported and the second childcare arrangement cost is missing
. replace chcare_second=0 if chcare<.&chcare_second==.
{txt}(7 real changes made)

{com}. 
. 
. *Generate aggregate child-specific childcare measure
. generate chcare_exp=chcare+chcare_second
{txt}(29,246 missing values generated)

{com}. label variable chcare_exp        "EXPENDITURE ON MAIN AND SECOND CHILDCARE ARRANGEMENT" 
{txt}
{com}. 
.    // weekly measure of HH expenditures on childcare per kid ages 0-12 (avail 2002)
. label variable chcare_hh_pc        "HH EXPENDITURE ON CHILDCARE PER CHILD" 
{txt}
{com}. 
. 
. *Generate positive reports indicators 
. generate pos_chcare_exp=(chcare_exp>0)
{txt}
{com}. replace pos_chcare_exp=. if chcare_exp==.
{txt}(29,246 real changes made, 29,246 to missing)

{com}. label variable pos_chcare_exp  "POSITIVE CHILD-BASED CHILDCARE REPORT (MAIN+SECOND)" 
{txt}
{com}. 
. 
. generate pos_chcare_hh_pc=(chcare_hh_pc>0)
{txt}
{com}. replace pos_chcare_hh_pc=. if chcare_hh_pc==.
{txt}(26,264 real changes made, 26,264 to missing)

{com}. label variable pos_chcare_hh_pc  "POSITIVE HH PER CAPITA CHILDCARE REPORT" 
{txt}
{com}. 
. 
. generate pos_chcare=(chcare>0)
{txt}
{com}. replace pos_chcare=. if chcare==.
{txt}(29,246 real changes made, 29,246 to missing)

{com}. 
. generate pos_chcare_second=(chcare_second>0)
{txt}
{com}. replace pos_chcare_second=. if chcare_second==.
{txt}(29,193 real changes made, 29,193 to missing)

{com}. 
. 
. 
. *Measure of imputed childcare expenditures 
. *(combine information from child-specific and average per household: 
. *if only one available - use it; if both are available - use the average): 
. 
. generate chcare_imp=.
{txt}(36,849 missing values generated)

{com}. *if both reports are positive: use average
. replace chcare_imp=(chcare_exp+chcare_hh_pc)/2 if pos_chcare_exp==1&pos_chcare_hh_pc==1
{txt}(192 real changes made)

{com}. *if one  is positive, other zero: use positive
. replace chcare_imp=chcare_exp if pos_chcare_exp==1&pos_chcare_hh_pc==0
{txt}(56 real changes made)

{com}. replace chcare_imp=chcare_hh_pc if pos_chcare_hh_pc==1&pos_chcare_exp==0
{txt}(302 real changes made)

{com}. *if one  is positive, other missing: use positive
. replace chcare_imp=chcare_exp if pos_chcare_exp==1&pos_chcare_hh_pc==.
{txt}(920 real changes made)

{com}. replace chcare_imp=chcare_hh_pc if pos_chcare_hh_pc==1&pos_chcare_exp==.
{txt}(2,768 real changes made)

{com}. *if one  is zero, other zero or missing: use zero
. replace chcare_imp=0 if pos_chcare_exp==0&pos_chcare_hh_pc==0
{txt}(1,305 real changes made)

{com}. replace chcare_imp=0 if pos_chcare_exp==0&pos_chcare_hh_pc==.
{txt}(4,828 real changes made)

{com}. replace chcare_imp=0 if pos_chcare_hh_pc==0&pos_chcare_exp==.
{txt}(5,962 real changes made)

{com}. 
. 
. gen pos_chcare_imp = (chcare_imp>0 & chcare_imp !=.)
{txt}
{com}. replace pos_chcare_imp=. if chcare_imp==.
{txt}(20,516 real changes made, 20,516 to missing)

{com}. 
. 
. generate ln_chcare_exp=log(chcare_exp)
{txt}(35,681 missing values generated)

{com}. generate ln_chcare_hh_pc=log(chcare_hh_pc)
{txt}(33,587 missing values generated)

{com}. generate ln_chcare_imp=log(chcare_imp)
{txt}(32,611 missing values generated)

{com}. 
. 
. *********************** Cleaning time  expenditures**********************
. rename tau_m tau_m_tot
{res}{txt}
{com}. rename tau_f tau_f_tot
{res}{txt}
{com}. 
. ********************************************************************************
. *use social+investment time input measure for summary and regressions
. 
. generate  tau_m=tau_m_socinvest
{txt}(30,281 missing values generated)

{com}. generate tau_f=tau_f_socinvest
{txt}(30,281 missing values generated)

{com}. ********************************************************************************
. 
. *Set father's time investment to missing if mothers are not married
. replace tau_f=. if curr_married==.|curr_married==0
{txt}(2,361 real changes made, 2,361 to missing)

{com}. 
. *Generate indicators for outlier values
. gen outlier_tau_m=.
{txt}(36,849 missing values generated)

{com}. replace outlier_tau_m=0 if tau_m<.
{txt}(6,568 real changes made)

{com}. replace outlier_tau_m=1 if tau_m<.&(tau_m<0.25|tau_m>100)
{txt}(688 real changes made)

{com}. 
. gen outlier_tau_f=.
{txt}(36,849 missing values generated)

{com}. replace outlier_tau_f=0 if tau_f<.
{txt}(4,207 real changes made)

{com}. replace outlier_tau_f=1 if tau_f<.&(tau_f<0.25|tau_f>100)
{txt}(713 real changes made)

{com}. 
. tab outlier_tau_m

{txt}outlier_tau {c |}
         _m {c |}      Freq.     Percent        Cum.
{hline 12}{c +}{hline 35}
          0 {c |}{res}      5,880       89.52       89.52
{txt}          1 {c |}{res}        688       10.48      100.00
{txt}{hline 12}{c +}{hline 35}
      Total {c |}{res}      6,568      100.00
{txt}
{com}. tab outlier_tau_f

{txt}outlier_tau {c |}
         _f {c |}      Freq.     Percent        Cum.
{hline 12}{c +}{hline 35}
          0 {c |}{res}      3,494       83.05       83.05
{txt}          1 {c |}{res}        713       16.95      100.00
{txt}{hline 12}{c +}{hline 35}
      Total {c |}{res}      4,207      100.00
{txt}
{com}. 
. gen ln_tau_m = ln(tau_m)  
{txt}(30,957 missing values generated)

{com}. replace ln_tau_m=. if outlier_tau_m==1  // only keep logs for tau values between .25 and 100
{txt}(12 real changes made, 12 to missing)

{com}. 
. gen ln_tau_f = ln(tau_f) 
{txt}(33,352 missing values generated)

{com}. replace ln_tau_f=. if outlier_tau_f==1    // only keep logs for tau values between .25 and 100
{txt}(3 real changes made, 3 to missing)

{com}. 
. gen pos_tau_m = (tau_m>0 & tau_m !=.)
{txt}
{com}. replace pos_tau_m=. if tau_m==.
{txt}(30,281 real changes made, 30,281 to missing)

{com}. 
. gen pos_tau_f = (tau_f>0 & tau_f !=.)
{txt}
{com}. replace pos_tau_f=. if tau_f==.
{txt}(32,642 real changes made, 32,642 to missing)

{com}. 
. 
. *********************** Cleaning goods expenditures **********************
. 
. *Generate indicators for outlier values
. gen outlier_hhinvest=.
{txt}(36,849 missing values generated)

{com}. replace outlier_hhinvest=0 if hhinvest<.
{txt}(4,028 real changes made)

{com}. replace outlier_hhinvest=1 if hhinvest<.&hhinvest<1
{txt}(188 real changes made)

{com}. tab outlier_hhinvest

{txt}outlier_hhi {c |}
      nvest {c |}      Freq.     Percent        Cum.
{hline 12}{c +}{hline 35}
          0 {c |}{res}      3,840       95.33       95.33
{txt}          1 {c |}{res}        188        4.67      100.00
{txt}{hline 12}{c +}{hline 35}
      Total {c |}{res}      4,028      100.00
{txt}
{com}. 
. gen ln_hhinvest = ln(hhinvest)                  // = ln(g*p)   
{txt}(32,881 missing values generated)

{com}. replace ln_hhinvest=. if outlier_hhinvest==1            // only keep logs if HH expenditures > $1/week
{txt}(128 real changes made, 128 to missing)

{com}. 
. gen pos_hhinvest = (hhinvest>0 & hhinvest != .)
{txt}
{com}. replace pos_hhinvest=. if hhinvest==.
{txt}(32,821 real changes made, 32,821 to missing)

{com}. 
. 
. *********************** Positive ind earnings and work hours **********************
. 
. * indicators for positive earning, hours, goods and time investment (set to missing if measure or hours are missing)
. 
. gen pos_earn_m = (m_earn>0 & m_earn != .)
{txt}
{com}. gen pos_earn_f = (f_earn>0 & f_earn != .)
{txt}
{com}. gen pos_hrs_m  = (m_hrs>0 & m_hrs != .)
{txt}
{com}. gen pos_hrs_f  = (f_hrs>0 & f_hrs != .)
{txt}
{com}. 
. replace pos_earn_m=. if m_hrs==.
{txt}(4,182 real changes made, 4,182 to missing)

{com}. replace pos_earn_f=. if f_hrs==.
{txt}(15,928 real changes made, 15,928 to missing)

{com}. replace pos_hrs_m=.  if m_hrs==.
{txt}(4,182 real changes made, 4,182 to missing)

{com}. replace pos_hrs_f=.  if f_hrs==.
{txt}(15,928 real changes made, 15,928 to missing)

{com}. 
. gen pos_hrs_mf = pos_hrs_m*pos_hrs_f
{txt}(16,101 missing values generated)

{com}. 
. *********************** Log relative input price ratios **********************
. 
. 
. *Create a weighted average HH investment price measure 
. gen p_avg = 0.3*p_serv + .7*p_goods
{txt}
{com}. 
. 
. * create log realtive input price ratios (scale childcare costs from annual into hourly units assuming average full-time care is 33hrs/week x 52 weeks))
. 
. gen ln_pratio_4ca = ln(p_yocent_e_cps_cpkt) - ln(p_avg) - ln(33*52)
{txt}
{com}. gen ln_pchcare_4ca = ln(p_yocent_e_cps_cpkt) - ln(33*52)
{txt}
{com}. 
. 
. gen ln_wage_m_rel = ln_wage_m - ln(p_avg) 
{txt}(13,322 missing values generated)

{com}. gen ln_wage_f_rel = ln_wage_f - ln(p_avg)
{txt}(19,157 missing values generated)

{com}. 
. gen ln_P4ca_Wm_ratio = ln(p_yocent_e_cps_cpkt) - ln_wage_m - ln(33*52)
{txt}(13,322 missing values generated)

{com}. gen ln_P4ca_Wf_ratio = ln(p_yocent_e_cps_cpkt) - ln_wage_f - ln(33*52)
{txt}(19,157 missing values generated)

{com}. 
. 
. *********************** Log input expenditure ratios **********************
. 
. gen     tau_mf     = tau_m 
{txt}(30,281 missing values generated)

{com}. replace tau_mf     = tau_m + tau_f if curr_married==1
{txt}(3,497 real changes made)

{com}. 
. gen tau_m_exp = m_wage*tau_m
{txt}(32,517 missing values generated)

{com}. gen tau_f_exp = f_wage*tau_f
{txt}(33,427 missing values generated)

{com}. 
. gen     tau_mf_exp = tau_m_exp 
{txt}(32,517 missing values generated)

{com}. replace tau_mf_exp = tau_m_exp + tau_f_exp if curr_married==1
{txt}(2,534 real changes made, 372 to missing)

{com}. 
. 
. gen ln_tau_fm_ratio = ln_tau_f - ln_tau_m                              // ln(tau_f/tau_m)
{txt}(33,430 missing values generated)

{com}. gen ln_tau_fm_exp_ratio = ln_tau_f + ln_wage_f - ln_tau_m - ln_wage_m  // ln(W_f tau_f/ (W_m tau_m))
{txt}(34,729 missing values generated)

{com}. 
. gen ln_tau_m_g_ratio = ln_tau_m - ln_hhinvest + ln(p_avg)              // mother ln(tau/g)
{txt}(33,860 missing values generated)

{com}. gen ln_tau_f_g_ratio = ln_tau_f - ln_hhinvest + ln(p_avg)              // father ln(tau/g)
{txt}(35,127 missing values generated)

{com}. 
. gen ln_tau_m_g_exp_ratio = ln_tau_m + ln_wage_m  - ln_hhinvest         // mother ln(W*tau/(p*g))
{txt}(34,641 missing values generated)

{com}. gen ln_tau_f_g_exp_ratio = ln_tau_f + ln_wage_f - ln_hhinvest          // father ln(W*tau/(p*g))
{txt}(35,358 missing values generated)

{com}. 
. 
. gen ln_invratio_imp   = ln_chcare_imp - ln_hhinvest           // ln(PY/(p*g)) -- imputed measure from child-specific & per capita HH measures
{txt}(36,271 missing values generated)

{com}. 
. gen ln_YP_tauW_m  = ln_chcare_imp - (ln_tau_m + ln_wage_m)             // mother ln(Y*P/W*tau)
{txt}(35,844 missing values generated)

{com}. gen ln_YP_tauW_f  = ln_chcare_imp - (ln_tau_f + ln_wage_f)             // father ln(Y*P/W*tau)
{txt}(36,166 missing values generated)

{com}. 
. 
. ****************Trandsform children test scores*******************************
. 
. generate AP=(ap_std-100)/15
{txt}(30,824 missing values generated)

{com}. generate LW=(lw_std-100)/15
{txt}(30,808 missing values generated)

{com}. 
. *Make test scores in 1997 and 2002 available for all years
. 
. generate AP_97=AP if year==1997
{txt}(34,775 missing values generated)

{com}. generate AP_02=AP if year==2002
{txt}(34,342 missing values generated)

{com}. bys kid: egen ap97=max(AP_97)
{txt}(14,035 missing values generated)

{com}. bys kid: egen ap02=max(AP_02)
{txt}(9,273 missing values generated)

{com}. 
. generate LW_97=LW if year==1997
{txt}(34,766 missing values generated)

{com}. generate LW_02=LW if year==2002
{txt}(34,335 missing values generated)

{com}. bys kid: egen lw97=max(LW_97)
{txt}(13,936 missing values generated)

{com}. bys kid: egen lw02=max(LW_02)
{txt}(9,196 missing values generated)

{com}. 
. drop AP_02 AP_97 LW_02 LW_97
{txt}
{com}. 
. *********** Generate indicator for some time spent with relatives *********** 
. *Indicator if more than 1 hour per week spent with relatives
. 
. generate ind_relative_present=(relative_present>=1)
{txt}
{com}. replace ind_relative_present=. if relative_present==.
{txt}(30,281 real changes made, 30,281 to missing)

{com}. 
. *Indicator for all panel - at least one CDS year of positive time with relatives
. 
. bys kid: egen ind_relative_97_07=max(ind_relative_present)
{txt}(2,244 missing values generated)

{com}. 
. 
. *Generate indicators for same state, same region where born for the head
. 
. gen ind_same_state=(state_grow_up==1)
{txt}
{com}. gen ind_same_region= (state_grow_up==1|state_grow_up==2)
{txt}
{com}. 
. replace ind_same_state=. if state_grow_up==.
{txt}(19,053 real changes made, 19,053 to missing)

{com}. replace ind_same_region=. if state_grow_up==.
{txt}(19,053 real changes made, 19,053 to missing)

{com}. 
. xtset kid year
{res}{txt}{col 8}panel variable:  {res}kid (unbalanced)
{txt}{col 9}time variable:  {res}{col 25}year, 1997 to 2007
{txt}{col 17}delta:  {res}1 year
{txt}
{com}. *Use last year data for non-survey years
. replace ind_same_state=L1.ind_same_state if year==1998|year==2000|year==2002|year==2004|year==2006
{txt}(15,022 real changes made)

{com}. replace ind_same_region=L1.ind_same_region if year==1998|year==2000|year==2002|year==2004|year==2006
{txt}(15,022 real changes made)

{com}. 
. 
. ******************************** Make balanced panel********************************
. fillin kid year
{txt}
{com}. bys kid: egen MID=max(mid)
{txt}
{com}. sum MID mid

{txt}    Variable {c |}        Obs        Mean    Std. Dev.       Min        Max
{hline 13}{c +}{hline 57}
{space 9}MID {c |}{res}     36,850     3296328     2208531       4005    6872171
{txt}{space 9}mid {c |}{res}     36,849     3296254     2208515       4005    6872171
{txt}
{com}. 
. **************** Generate indicator if all prices available ****************
. generate ind_price=0
{txt}
{com}. forval y=1997(1)2007{c -(}
{txt}  2{com}. gen ind_price_`y'_t=0
{txt}  3{com}. *Generate indicator in a given year, indicators during other survey years are generated as missing
. replace ind_price_`y'_t=1 if  ln_wage_f<. & ln_wage_m<. & p_avg>0 & p_avg<. & p_yocent_e_cps_cpkt>0 & p_yocent_e_cps_cpkt<. & curr_married==1 & year==`y'
{txt}  4{com}. replace ind_price=1 if        ln_wage_f<. & ln_wage_m<. & p_avg>0 & p_avg<. & p_yocent_e_cps_cpkt>0 & p_yocent_e_cps_cpkt<. & curr_married==1 & year==`y'
{txt}  5{com}. 
. replace ind_price_`y'_t=1 if  ln_wage_m<. & p_avg>0 & p_avg<. & p_yocent_e_cps_cpkt>0 & p_yocent_e_cps_cpkt<. & curr_married==0 & year==`y'
{txt}  6{com}. replace ind_price=1       if  ln_wage_m<. & p_avg>0 & p_avg<. & p_yocent_e_cps_cpkt>0 & p_yocent_e_cps_cpkt<. & curr_married==0 & year==`y'
{txt}  7{com}. 
. *Generate the indicator for the whole sample for a given kid
. bys kid: egen ind_price_`y'=max(ind_price_`y'_t)
{txt}  8{com}. drop ind_price_`y'_t
{txt}  9{com}. {c )-}
{txt}(1,165 real changes made)
(1,165 real changes made)
(596 real changes made)
(596 real changes made)
(1,392 real changes made)
(1,392 real changes made)
(782 real changes made)
(782 real changes made)
(1,178 real changes made)
(1,178 real changes made)
(659 real changes made)
(659 real changes made)
(1,439 real changes made)
(1,439 real changes made)
(807 real changes made)
(807 real changes made)
(1,154 real changes made)
(1,154 real changes made)
(650 real changes made)
(650 real changes made)
(1,357 real changes made)
(1,357 real changes made)
(826 real changes made)
(826 real changes made)
(1,087 real changes made)
(1,087 real changes made)
(653 real changes made)
(653 real changes made)
(1,304 real changes made)
(1,304 real changes made)
(808 real changes made)
(808 real changes made)
(1,063 real changes made)
(1,063 real changes made)
(674 real changes made)
(674 real changes made)
(1,263 real changes made)
(1,263 real changes made)
(802 real changes made)
(802 real changes made)
(1,002 real changes made)
(1,002 real changes made)
(659 real changes made)
(659 real changes made)

{com}. 
. *All prices are available between 1997-2001
. generate ind_price_97_01=ind_price_1997*ind_price_1998*ind_price_1999*ind_price_2000*ind_price_2001
{txt}
{com}. 
. *All prices are available between 2002-2006
. generate ind_price_02_06=ind_price_2002*ind_price_2003*ind_price_2004*ind_price_2005*ind_price_2006
{txt}
{com}. 
. label drop _all
{txt}
{com}. 
. summ ind_price*

{txt}    Variable {c |}        Obs        Mean    Std. Dev.       Min        Max
{hline 13}{c +}{hline 57}
{space 3}ind_price {c |}{res}     36,850    .5785617    .4937962          0          1
{txt}ind_pri~1997 {c |}{res}     36,850    .5256716    .4993473          0          1
{txt}ind_pri~1998 {c |}{res}     36,850    .6489552    .4773034          0          1
{txt}ind_pri~1999 {c |}{res}     36,850    .5483582    .4976627          0          1
{txt}ind_pri~2000 {c |}{res}     36,850    .6704478     .470057          0          1
{txt}{hline 13}{c +}{hline 57}
ind_pri~2001 {c |}{res}     36,850    .5385075    .4985217          0          1
{txt}ind_pri~2002 {c |}{res}     36,850    .6516418    .4764566          0          1
{txt}ind_pri~2003 {c |}{res}     36,850     .519403    .4996302          0          1
{txt}ind_pri~2004 {c |}{res}     36,850    .6304478    .4826901          0          1
{txt}ind_pri~2005 {c |}{res}     36,850    .5185075    .4996641          0          1
{txt}{hline 13}{c +}{hline 57}
ind_pri~2006 {c |}{res}     36,850    .6164179    .4862646          0          1
{txt}ind_pri~2007 {c |}{res}     36,850    .4958209    .4999893          0          1
{txt}ind_pric~_01 {c |}{res}     36,850    .2850746    .4514561          0          1
{txt}ind_pric~_06 {c |}{res}     36,850         .34    .4737152          0          1
{txt}
{com}. 
. 
. * Create indicator for some positive and non-missing CDS investment measure
. 
. gen CDS_invest_ind = (tau_m>0 & tau_m!=.)|(tau_f>0 & tau_f!=.)|(hhinvest>0 & hhinvest!=.)|/*
> */ (chcare_imp>0&chcare_imp!=.)
{txt}
{com}. 
. *Replace to zero for non-CDS years
. replace CDS_invest_ind=0 if year!=1997&year!=2002&year!=2007
{txt}(2,679 real changes made)

{com}. 
. *Indicator: child has at least one non-missing CDS investment measure over 1997,2002, and 2007
. 
. bys kid: egen CDS_invest_ind_97_07=max(CDS_invest_ind)
{txt}
{com}. 
. 
. ********************************************************************************
. *********************** D. SAVE DATA FOR REASONABLY AGED PARENTS****************
. ********************************************************************************
. 
. *Sort dataset before saving
. sort kid year
{txt}
{com}. *Save dataset
. export delimited using "$data/psid_fam.csv", replace
{res}{txt}file D:\users\llochner\Dropbox\JOINT PROJECTS\JPE_Child_Devp_2020\FINAL_Replication_CLMP_JPE\data\data_derived/psid_fam.csv saved

{com}. 
. 
. *Drop observations that do not satisfy sample restrictions 
. keep if ind_not_sample==0
{txt}(4,323 observations deleted)

{com}. save "$data/psid_fam.dta", replace
{txt}file D:\users\llochner\Dropbox\JOINT PROJECTS\JPE_Child_Devp_2020\FINAL_Replication_CLMP_JPE\data\data_derived/psid_fam.dta saved

{com}. 
. 
. log close
      {txt}name:  {res}<unnamed>
       {txt}log:  {res}D:\users\llochner\Dropbox\JOINT PROJECTS\JPE_Child_Devp_2020\FINAL_Replication_CLMP_JPE\code\estimation\basics_rel_demand\logs/3_data_cleaning_child_panel.smcl
  {txt}log type:  {res}smcl
 {txt}closed on:  {res} 9 Jul 2025, 17:15:47
{txt}{.-}
{smcl}
{txt}{sf}{ul off}